[INFO] cloning repository https://github.com/KJH-x/paigu-bot-core
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/KJH-x/paigu-bot-core" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKJH-x%2Fpaigu-bot-core", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKJH-x%2Fpaigu-bot-core'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 7d4cb2ae9adbe280cb8bde363a4a9cd0527b2955
[INFO] checking KJH-x/paigu-bot-core against master#40557f6225e337d68c8d4f086557ce54135f5dd9 for pr-158447
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKJH-x%2Fpaigu-bot-core" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/KJH-x/paigu-bot-core
[INFO] finished tweaking git repo https://github.com/KJH-x/paigu-bot-core
[INFO] tweaked toml for git repo https://github.com/KJH-x/paigu-bot-core written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/KJH-x/paigu-bot-core on toolchain 40557f6225e337d68c8d4f086557ce54135f5dd9
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+40557f6225e337d68c8d4f086557ce54135f5dd9" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/KJH-x/paigu-bot-core already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+40557f6225e337d68c8d4f086557ce54135f5dd9" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded openssl-sys v0.9.115
[INFO] [stderr]   Downloaded aws-smithy-json v0.61.9
[INFO] [stderr]   Downloaded aws-smithy-checksums v0.63.12
[INFO] [stderr]   Downloaded aws-smithy-http v0.62.6
[INFO] [stderr]   Downloaded crc-fast v1.6.0
[INFO] [stderr]   Downloaded openssl v0.10.79
[INFO] [stderr]   Downloaded web-sys v0.3.98
[INFO] [stderr]   Downloaded aws-sdk-s3 v1.119.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 3eb7f5b56389747014e61abcc10d6ff42dedd027be9a71e15dbacbcd3561ef17
[INFO] running `Command { std: "docker" "start" "3eb7f5b56389747014e61abcc10d6ff42dedd027be9a71e15dbacbcd3561ef17", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "3eb7f5b56389747014e61abcc10d6ff42dedd027be9a71e15dbacbcd3561ef17" "/opt/rustwide/cargo-home/bin/cargo" "+40557f6225e337d68c8d4f086557ce54135f5dd9" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "3eb7f5b56389747014e61abcc10d6ff42dedd027be9a71e15dbacbcd3561ef17", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "3eb7f5b56389747014e61abcc10d6ff42dedd027be9a71e15dbacbcd3561ef17" "/opt/rustwide/cargo-home/bin/cargo" "+40557f6225e337d68c8d4f086557ce54135f5dd9" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking socket2 v0.6.3
[INFO] [stderr]     Checking mio v1.2.0
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]     Checking typenum v1.20.0
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]     Checking http v0.2.12
[INFO] [stderr]     Checking deranged v0.5.8
[INFO] [stderr]     Checking num-conv v0.2.1
[INFO] [stderr]     Checking base64-simd v0.8.0
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]    Compiling cmake v0.1.58
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling aws-smithy-runtime-api-macros v1.0.0
[INFO] [stderr]    Compiling aws-lc-rs v1.16.3
[INFO] [stderr]     Checking rustls-pki-types v1.14.1
[INFO] [stderr]     Checking const-oid v0.9.6
[INFO] [stderr]     Checking base64ct v1.8.3
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]     Checking der v0.6.1
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling aws-lc-sys v0.40.0
[INFO] [stderr]    Compiling rustls v0.21.12
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]    Compiling rustls v0.23.40
[INFO] [stderr]     Checking ff v0.12.1
[INFO] [stderr]     Checking bytes-utils v0.1.4
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]     Checking cmov v0.5.3
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]     Checking http-body v0.4.6
[INFO] [stderr]     Checking base16ct v0.1.1
[INFO] [stderr]     Checking ctutils v0.4.2
[INFO] [stderr]     Checking tokio v1.52.3
[INFO] [stderr]     Checking group v0.12.1
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]     Checking const-oid v0.10.2
[INFO] [stderr]     Checking hybrid-array v0.4.11
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]     Checking time v0.3.47
[INFO] [stderr]    Compiling openssl-sys v0.9.115
[INFO] [stderr]     Checking spki v0.6.0
[INFO] [stderr]     Checking uuid v1.23.1
[INFO] [stderr]     Checking rustls-native-certs v0.8.3
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]     Checking pkcs8 v0.9.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling aws-types v1.3.15
[INFO] [stderr]     Checking bitflags v2.11.1
[INFO] [stderr]     Checking crypto-bigint v0.5.5
[INFO] [stderr]     Checking crypto-bigint v0.4.9
[INFO] [stderr]     Checking sec1 v0.3.0
[INFO] [stderr]    Compiling zerocopy v0.8.48
[INFO] [stderr]     Checking crypto-common v0.2.1
[INFO] [stderr]     Checking block-buffer v0.12.0
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking signature v1.6.4
[INFO] [stderr]     Checking zerofrom v0.1.7
[INFO] [stderr]    Compiling bytes v1.11.1
[INFO] [stderr]     Checking yoke v0.8.2
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking zerovec v0.11.6
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]     Checking rfc6979 v0.3.1
[INFO] [stderr]     Checking elliptic-curve v0.12.3
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]    Compiling concurrent-queue v2.5.0
[INFO] [stderr]     Checking ecdsa v0.14.8
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling openssl v0.10.79
[INFO] [stderr]     Checking digest v0.11.3
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]     Checking potential_utf v0.1.5
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling event-listener v5.4.1
[INFO] [stderr]     Checking sha2 v0.11.0
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]     Checking hmac v0.13.0
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]     Checking p256 v0.11.1
[INFO] [stderr]    Compiling futures-intrusive v0.5.0
[INFO] [stderr]     Checking rand v0.9.4
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]    Compiling crossbeam-queue v0.3.12
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]    Compiling proc-macro2-diagnostics v0.10.1
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking regex-lite v0.1.9
[INFO] [stderr]    Compiling hkdf v0.12.4
[INFO] [stderr]     Checking rustls-webpki v0.101.7
[INFO] [stderr]     Checking sct v0.7.1
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]     Checking md-5 v0.10.6
[INFO] [stderr]     Checking xmlparser v0.13.6
[INFO] [stderr]     Checking aws-smithy-xml v0.60.15
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]    Compiling uncased v0.9.10
[INFO] [stderr]     Checking urlencoding v2.1.3
[INFO] [stderr]     Checking regex v1.12.3
[INFO] [stderr]    Compiling pear_codegen v0.2.9
[INFO] [stderr]     Checking rand v0.8.6
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]    Compiling figment v0.10.19
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking aws-smithy-async v1.2.14
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking tokio-stream v0.1.18
[INFO] [stderr]     Checking crc-fast v1.6.0
[INFO] [stderr]     Checking inlinable_string v0.1.15
[INFO] [stderr]     Checking pear v0.2.9
[INFO] [stderr]     Checking tungstenite v0.26.2
[INFO] [stderr]     Checking tower-http v0.6.10
[INFO] [stderr]     Checking sqlx-core v0.8.6
[INFO] [stderr]     Checking aws-smithy-types v1.4.7
[INFO] [stderr]     Checking h2 v0.4.14
[INFO] [stderr]     Checking h2 v0.3.27
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]     Checking csv-core v0.1.13
[INFO] [stderr]     Checking encoding_rs v0.8.35
[INFO] [stderr]     Checking aws-smithy-runtime-api v1.12.0
[INFO] [stderr]     Checking aws-smithy-eventstream v0.60.20
[INFO] [stderr]     Checking aws-smithy-json v0.62.5
[INFO] [stderr]     Checking aws-smithy-query v0.60.15
[INFO] [stderr]     Checking aws-smithy-json v0.61.9
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking csv v1.4.0
[INFO] [stderr]     Checking tokio-tungstenite v0.26.2
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]     Checking tokio-rustls v0.24.1
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking aws-smithy-http v0.63.6
[INFO] [stderr]     Checking aws-credential-types v1.2.14
[INFO] [stderr]     Checking aws-smithy-observability v0.2.6
[INFO] [stderr]     Checking aws-smithy-http v0.62.6
[INFO] [stderr]     Checking aws-sigv4 v1.4.3
[INFO] [stderr]     Checking aws-smithy-checksums v0.63.12
[INFO] [stderr]     Checking sqlx-postgres v0.8.6
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stderr]     Checking hyper v1.9.0
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking axum v0.7.9
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking hyper-rustls v0.24.2
[INFO] [stderr]    Compiling sqlx-macros-core v0.8.6
[INFO] [stderr]    Compiling sqlx-macros v0.8.6
[INFO] [stderr]     Checking rustls-webpki v0.103.13
[INFO] [stderr]     Checking sqlx v0.8.6
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking hyper-rustls v0.27.9
[INFO] [stderr]     Checking aws-smithy-http-client v1.1.12
[INFO] [stderr]     Checking aws-smithy-runtime v1.11.1
[INFO] [stderr]     Checking aws-runtime v1.7.3
[INFO] [stderr]     Checking aws-sdk-ssooidc v1.100.0
[INFO] [stderr]     Checking aws-sdk-sts v1.103.0
[INFO] [stderr]     Checking aws-sdk-sso v1.98.0
[INFO] [stderr]     Checking aws-sdk-s3 v1.119.0
[INFO] [stderr]     Checking aws-config v1.8.16
[INFO] [stderr]     Checking paigu-bot-core v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `RoundId`
[INFO] [stdout]  --> src/services/message_service.rs:4:34
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::domain::ids::{UserId, RoundId};
[INFO] [stdout]   |                                  ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RoundStatus`
[INFO] [stdout]  --> src/services/message_service.rs:5:35
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::domain::round::{Round, RoundStatus};
[INFO] [stdout]   |                                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::domain::claim::Eligibility`
[INFO] [stdout]  --> src/services/message_service.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::domain::claim::Eligibility;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ClaimCreated`
[INFO] [stdout]  --> src/services/message_service.rs:7:56
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::domain::event::{EventEnvelope, DomainEvent, ClaimCreated, EventStatus, AdminAllocationAdjusted, AdminAllocationAction, Adm...
[INFO] [stdout]   |                                                        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ItemKind` and `Item`
[INFO] [stdout]  --> src/services/message_service.rs:8:27
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::domain::item::{Item, RoundContext, ItemKind};
[INFO] [stdout]   |                           ^^^^                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::domain::money::MoneyCents`
[INFO] [stdout]  --> src/services/message_service.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::domain::money::MoneyCents;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::domain::snapshot::AllocationSnapshot`
[INFO] [stdout]   --> src/services/message_service.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::domain::snapshot::AllocationSnapshot;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `RawMessageRecord` and `SnapshotRepo`
[INFO] [stdout]   --> src/services/message_service.rs:16:79
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::repo::round_repo::{RawMessageRepo, RoundRepo, ItemRepo, EventRepo, SnapshotRepo, EligibilityRepo, RawMessageRecord};
[INFO] [stdout]    |                                                                               ^^^^^^^^^^^^                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `mpsc`
[INFO] [stdout]  --> src/ws/ws_server.rs:3:26
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::sync::{watch, mpsc, Mutex};
[INFO] [stdout]   |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::error::AppResult`
[INFO] [stdout]   --> src/ws/ws_server.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::error::AppResult;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RoundId`
[INFO] [stdout]  --> src/services/message_service.rs:4:34
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::domain::ids::{UserId, RoundId};
[INFO] [stdout]   |                                  ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RoundStatus`
[INFO] [stdout]  --> src/services/message_service.rs:5:35
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::domain::round::{Round, RoundStatus};
[INFO] [stdout]   |                                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::domain::claim::Eligibility`
[INFO] [stdout]  --> src/services/message_service.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::domain::claim::Eligibility;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ClaimCreated`
[INFO] [stdout]  --> src/services/message_service.rs:7:56
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::domain::event::{EventEnvelope, DomainEvent, ClaimCreated, EventStatus, AdminAllocationAdjusted, AdminAllocationAction, Adm...
[INFO] [stdout]   |                                                        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ItemKind` and `Item`
[INFO] [stdout]  --> src/services/message_service.rs:8:27
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::domain::item::{Item, RoundContext, ItemKind};
[INFO] [stdout]   |                           ^^^^                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::domain::money::MoneyCents`
[INFO] [stdout]  --> src/services/message_service.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::domain::money::MoneyCents;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::domain::snapshot::AllocationSnapshot`
[INFO] [stdout]   --> src/services/message_service.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::domain::snapshot::AllocationSnapshot;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `RawMessageRecord` and `SnapshotRepo`
[INFO] [stdout]   --> src/services/message_service.rs:16:79
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::repo::round_repo::{RawMessageRepo, RoundRepo, ItemRepo, EventRepo, SnapshotRepo, EligibilityRepo, RawMessageRecord};
[INFO] [stdout]    |                                                                               ^^^^^^^^^^^^                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `mpsc`
[INFO] [stdout]  --> src/ws/ws_server.rs:3:26
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::sync::{watch, mpsc, Mutex};
[INFO] [stdout]   |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::error::AppResult`
[INFO] [stdout]   --> src/ws/ws_server.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::error::AppResult;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::domain::round::Round`
[INFO] [stdout]  --> src/tests/replay_helpers.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::domain::round::Round;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Item`
[INFO] [stdout]  --> src/tests/replay_helpers.rs:5:27
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::domain::item::{Item, ItemKind};
[INFO] [stdout]   |                           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ClaimStatus` and `Claim`
[INFO] [stdout]  --> src/tests/replay_helpers.rs:7:71
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::domain::claim::{EffectiveClaimLine, ClaimType, SlotPolicy, Claim, ClaimStatus, Eligibility, EligibilityScope, ClaimLine};
[INFO] [stdout]   |                                                                       ^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ClaimCancelled`
[INFO] [stdout]  --> src/tests/replay_helpers.rs:8:70
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::domain::event::{EventEnvelope, DomainEvent, ClaimCreated, ClaimCancelled, EventStatus};
[INFO] [stdout]   |                                                                      ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EventRepo`
[INFO] [stdout]   --> src/services/message_service.rs:16:68
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::repo::round_repo::{RawMessageRepo, RoundRepo, ItemRepo, EventRepo, SnapshotRepo, EligibilityRepo, RawMessageRecord};
[INFO] [stdout]    |                                                                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EventRepo`
[INFO] [stdout]   --> src/services/message_service.rs:16:68
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::repo::round_repo::{RawMessageRepo, RoundRepo, ItemRepo, EventRepo, SnapshotRepo, EligibilityRepo, RawMessageRecord};
[INFO] [stdout]    |                                                                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Unauthorized` and `Conflict` are never constructed
[INFO] [stdout]   --> src/error.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum AppError {
[INFO] [stdout]    |          -------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 39 |     Unauthorized(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     Conflict(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AppError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `EmptyResponse`, `RateLimited`, and `TokenLimitExceeded` are never constructed
[INFO] [stdout]   --> src/error.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub enum LlmError {
[INFO] [stdout]    |          -------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 57 |     EmptyResponse,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     RateLimited,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     TokenLimitExceeded,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LlmError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `MissingField`, `UnknownIntent`, `LowConfidence`, `UnknownItem`, `AmbiguousItem`, and `AdminCommandParse` are never constructed
[INFO] [stdout]   --> src/error.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub enum ParseError {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 72 |     MissingField(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     UnknownIntent(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |     LowConfidence(f32),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     UnknownItem(String),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 90 |     AmbiguousItem(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93 |     AdminCommandParse(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ParseError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]    --> src/error.rs:99:5
[INFO] [stdout]     |
[INFO] [stdout]  97 | pub enum ValidationError {
[INFO] [stdout]     |          --------------- variants in this enum
[INFO] [stdout]  98 |     #[error("Round not active: {0}")]
[INFO] [stdout]  99 |     RoundNotActive(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     RoundNotFound(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     UserNotFound(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     ItemNotFound(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     ExceedsMaxQuantity(String, u32, u32),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     DuplicateClaim(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     InvalidCancelTarget(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     PermissionDenied(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     TimeWindowNotOpen,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     NeedConfirmation(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ValidationError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `NoAvailableSlots`, `SlotAlreadyFilled`, `SlotLocked`, `ExceedsRemaining`, and `SegmentConflict` are never constructed
[INFO] [stdout]    --> src/error.rs:132:5
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub enum AllocationError {
[INFO] [stdout]     |          --------------- variants in this enum
[INFO] [stdout] 131 |     #[error("No available slots for item {0}")]
[INFO] [stdout] 132 |     NoAvailableSlots(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     SlotAlreadyFilled(String, u32, u32),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     SlotLocked(String, u32, u32),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     ExceedsRemaining(u32),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     SegmentConflict(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AllocationError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `DiscountExceedsGross`, `NegativePayable`, `GiftItemNotFound`, `InvalidDiscountRule`, and `RoundingError` are never constructed
[INFO] [stdout]    --> src/error.rs:150:5
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub enum SettlementError {
[INFO] [stdout]     |          --------------- variants in this enum
[INFO] [stdout] 149 |     #[error("Discount exceeds gross: gross={0}, discount={1}")]
[INFO] [stdout] 150 |     DiscountExceedsGross(i64, i64),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     NegativePayable(String, i64),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     GiftItemNotFound(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     InvalidDiscountRule(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     RoundingError(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SettlementError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `EventNotFound`, `SequenceConflict`, `EventAlreadyExists`, and `InvalidEventType` are never constructed
[INFO] [stdout]    --> src/error.rs:168:5
[INFO] [stdout]     |
[INFO] [stdout] 166 | pub enum EventError {
[INFO] [stdout]     |          ---------- variants in this enum
[INFO] [stdout] 167 |     #[error("Event not found: {0}")]
[INFO] [stdout] 168 |     EventNotFound(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     SequenceConflict(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     EventAlreadyExists(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     InvalidEventType(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EventError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ReplayNotFound`, `ConfigHashMismatch`, and `SnapshotRestoreFailed` are never constructed
[INFO] [stdout]    --> src/error.rs:183:5
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub enum ReplayError {
[INFO] [stdout]     |          ----------- variants in this enum
[INFO] [stdout] 182 |     #[error("Replay not found: {0}")]
[INFO] [stdout] 183 |     ReplayNotFound(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     ConfigHashMismatch(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     SnapshotRestoreFailed(u64, String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ReplayError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `R2Put` and `S3` are never constructed
[INFO] [stdout]    --> src/error.rs:204:5
[INFO] [stdout]     |
[INFO] [stdout] 202 | pub enum PublishError {
[INFO] [stdout]     |          ------------ variants in this enum
[INFO] [stdout] 203 |     #[error("R2 put error: {0}")]
[INFO] [stdout] 204 |     R2Put(String),
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     S3(String),
[INFO] [stdout]     |     ^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PublishError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `config`, `pool`, and `repo` are never read
[INFO] [stdout]   --> src/app_state.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct AppState {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 31 |     pub config: Config,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 32 |     pub pool: PgPool,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 33 |     pub repo: Arc<RepoSet>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/app_state.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub struct RepoSet {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 38 |     pub round: Arc<dyn RoundRepo>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 39 |     pub item: Arc<dyn ItemRepo>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 40 |     pub event: Arc<dyn EventRepo>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 41 |     pub snapshot: Arc<dyn SnapshotRepo>,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 42 |     pub raw_message: Arc<dyn RawMessageRepo>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 43 |     pub eligibility: Arc<dyn EligibilityRepo>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 44 |     pub user: Arc<dyn UserRepo>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `admin` and `cancel` are never read
[INFO] [stdout]   --> src/app_state.rs:49:9
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct ServiceSet {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 48 |     pub round: Arc<RoundService>,
[INFO] [stdout] 49 |     pub admin: Arc<AdminService>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 50 |     pub message: Arc<MessageService>,
[INFO] [stdout] 51 |     pub cancel: Arc<CancelService>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AliasId` is never constructed
[INFO] [stdout]   --> src/domain/ids.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct AliasId(pub String);
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayId` is never constructed
[INFO] [stdout]   --> src/domain/ids.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct ReplayId(pub String);
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_yuan_float`, `to_yuan_float`, and `checked_div_i64` are never used
[INFO] [stdout]   --> src/domain/money.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl MoneyCents {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub fn from_yuan_float(yuan: f64) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub fn to_yuan_float(self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn checked_div_i64(self, n: i64) -> Option<Self> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Timestamp` is never used
[INFO] [stdout]  --> src/domain/time.rs:3:10
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub type Timestamp = DateTime<Utc>;
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `utc_now` is never used
[INFO] [stdout]  --> src/domain/time.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn utc_now() -> Timestamp {
[INFO] [stdout]   |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `now_millis` is never used
[INFO] [stdout]  --> src/domain/time.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn now_millis() -> i64 {
[INFO] [stdout]   |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `User` is never constructed
[INFO] [stdout]  --> src/domain/user.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct User {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/domain/user.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl User {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 16 |     pub fn new(user_id: UserId, qq_id: String, display_name: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `allows_admin_commands` is never used
[INFO] [stdout]   --> src/domain/round.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl RoundStatus {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn allows_admin_commands(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_active_at` is never used
[INFO] [stdout]   --> src/domain/round.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl Round {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] 66 |     pub fn is_active_at(&self, at: DateTime<Utc>) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RoundConfig` is never constructed
[INFO] [stdout]   --> src/domain/round.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct RoundConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `matches_name_or_alias`, `exact_matches_item_id`, and `exact_matches_name` are never used
[INFO] [stdout]   --> src/domain/item.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl Item {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] 66 |     pub fn matches_name_or_alias(&self, name: &str) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn exact_matches_item_id(&self, id: &str) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn exact_matches_name(&self, name: &str) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ItemAlias` is never constructed
[INFO] [stdout]   --> src/domain/item.rs:86:12
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub struct ItemAlias {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_str` is never used
[INFO] [stdout]   --> src/domain/claim.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl ClaimType {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] 14 |     pub fn as_str(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new_split`, `new_single`, and `new_tail_locked` are never used
[INFO] [stdout]   --> src/domain/claim.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 61 | impl ClaimLine {
[INFO] [stdout]    | -------------- associated functions in this implementation
[INFO] [stdout] 62 |     pub fn new_split(item_id: impl Into<ItemId>, quantity: u32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn new_single(item_id: impl Into<ItemId>, quantity: u32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn new_tail_locked(item_id: impl Into<ItemId>, quantity: u32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `applies_to_item_kind` is never used
[INFO] [stdout]    --> src/domain/claim.rs:176:12
[INFO] [stdout]     |
[INFO] [stdout] 166 | impl Eligibility {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn applies_to_item_kind(&self, kind: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `event_type_str` is never used
[INFO] [stdout]   --> src/domain/event.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl DomainEvent {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 23 |     pub fn event_type_str(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `event_id`, `raw_message_id_str`, and `occurred_at` are never used
[INFO] [stdout]   --> src/domain/event.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | impl EventEnvelope {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] 54 |     pub fn event_id(&self) -> &EventId {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn raw_message_id_str(&self) -> Option<&str> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn occurred_at(&self) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EventOrderKey` is never constructed
[INFO] [stdout]    --> src/domain/event.rs:181:12
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub struct EventOrderKey {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compare_claim_line_order` is never used
[INFO] [stdout]    --> src/domain/event.rs:193:8
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub fn compare_claim_line_order(a: &crate::domain::claim::EffectiveClaimLine,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `slot`, `slot_mut`, and `first_empty_normal_slot` are never used
[INFO] [stdout]   --> src/domain/allocation.rs:83:12
[INFO] [stdout]    |
[INFO] [stdout] 82 | impl BoxAllocation {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 83 |     pub fn new(box_index: u32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 90 |     pub fn slot(&self, index: usize) -> Option<&SlotAllocation> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 94 |     pub fn slot_mut(&mut self, index: usize) -> Option<&mut SlotAllocation> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub fn first_empty_normal_slot(&self) -> Option<usize> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `box_at_mut` and `get_or_create_box` are never used
[INFO] [stdout]    --> src/domain/allocation.rs:118:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | impl ItemAllocation {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn box_at_mut(&mut self, index: u32) -> Option<&mut BoxAllocation> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn get_or_create_box(&mut self, box_index: u32) -> &mut BoxAllocation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `negative_discount_total` is never used
[INFO] [stdout]   --> src/domain/settlement.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | impl UserBill {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 49 |     pub fn negative_discount_total(&self) -> MoneyCents {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AdminSlotView` is never constructed
[INFO] [stdout]   --> src/domain/snapshot.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct AdminSlotView {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `short_ack_for_user` is never used
[INFO] [stdout]    --> src/domain/snapshot.rs:135:12
[INFO] [stdout]     |
[INFO] [stdout]  97 | impl AllocationSnapshot {
[INFO] [stdout]     | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn short_ack_for_user(&self, user_id: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PriorityTrace` is never constructed
[INFO] [stdout]    --> src/domain/snapshot.rs:167:12
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub struct PriorityTrace {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AllocationTraceItem` is never constructed
[INFO] [stdout]    --> src/domain/snapshot.rs:175:12
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub struct AllocationTraceItem {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DecisionTrace` is never constructed
[INFO] [stdout]    --> src/domain/snapshot.rs:186:12
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub struct DecisionTrace {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SettlementTraceItem` is never constructed
[INFO] [stdout]    --> src/domain/snapshot.rs:195:12
[INFO] [stdout]     |
[INFO] [stdout] 195 | pub struct SettlementTraceItem {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `empty_with_note` is never used
[INFO] [stdout]    --> src/domain/snapshot.rs:201:12
[INFO] [stdout]     |
[INFO] [stdout] 200 | impl DecisionTrace {
[INFO] [stdout]     | ------------------ associated function in this implementation
[INFO] [stdout] 201 |     pub fn empty_with_note(note: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ItemSummaryRow` is never constructed
[INFO] [stdout]  --> src/domain/export.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct ItemSummaryRow {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserBillRow` is never constructed
[INFO] [stdout]   --> src/domain/export.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct UserBillRow {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderHelperRow` is never constructed
[INFO] [stdout]   --> src/domain/export.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct OrderHelperRow {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DiscountRulesSet` is never constructed
[INFO] [stdout]  --> src/domain/discount.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct DiscountRulesSet {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `rule_id` is never used
[INFO] [stdout]   --> src/domain/discount.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | impl DiscountRule {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] 47 |     pub fn rule_id(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GiftRule` is never constructed
[INFO] [stdout]  --> src/domain/gift.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct GiftRule {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_gift_quantity` is never used
[INFO] [stdout]   --> src/domain/gift.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn compute_gift_quantity(scoped_total: MoneyCents, threshold: MoneyCents) -> u32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_admin_command_candidate` and `is_admin` are never used
[INFO] [stdout]   --> src/inbound/qq_message.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl IncomingQqMessage {
[INFO] [stdout]    | ---------------------- methods in this implementation
[INFO] [stdout] 17 |     pub fn is_admin_command_candidate(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn is_admin(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `need_confirm`, `is_silent`, and `text_content` are never used
[INFO] [stdout]   --> src/inbound/command_router.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl BotReply {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn need_confirm(text: impl Into<String>, token: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn is_silent(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn text_content(&self) -> Option<&str> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_system_prompt` is never used
[INFO] [stdout]  --> src/parser/prompt.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn build_system_prompt() -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_str` is never used
[INFO] [stdout]   --> src/parser/parsed_event.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl ParsedIntent {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] 20 |     pub fn as_str(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParseCacheEntry` is never constructed
[INFO] [stdout]  --> src/parser/parse_cache.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct ParseCacheEntry {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParseCache` is never constructed
[INFO] [stdout]   --> src/parser/parse_cache.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct ParseCache {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get`, `insert`, and `len` are never used
[INFO] [stdout]   --> src/parser/parse_cache.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl ParseCache {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 22 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn get(&self, raw_message_id: &str, input_hash: &str) -> Option<&ParseCacheEntry> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn insert(&mut self, entry: ParseCacheEntry) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn len(&self) -> usize {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_input_hash` is never used
[INFO] [stdout]   --> src/parser/parse_cache.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn compute_input_hash(text: &str, group_id: &str, user_id: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParseContext` is never constructed
[INFO] [stdout]   --> src/parser/parse_cache.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct ParseContext {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/parser/parse_cache.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl ParseCacheEntry {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 57 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_with_mode` is never used
[INFO] [stdout]   --> src/parser/parse_cache.rs:76:14
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub async fn parse_with_mode(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `read_after_sequence` is never used
[INFO] [stdout]   --> src/engine/event_store.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub trait EventStore: Send + Sync {
[INFO] [stdout]    |           ---------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 11 |     async fn read_after_sequence(&self, round_id: &RoundId, after_sequence: i64) -> AppResult<Vec<EventEnvelope>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `next_slot_in_box` is never read
[INFO] [stdout]    --> src/engine/allocation_engine.rs:249:5
[INFO] [stdout]     |
[INFO] [stdout] 243 | struct ItemWorkingState {
[INFO] [stdout]     |        ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 249 |     next_slot_in_box: HashMap<u32, u32>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `gift_valuations` is never read
[INFO] [stdout]   --> src/engine/settlement_engine.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct SettlementInput {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub gift_valuations: Vec<crate::domain::gift::GiftAllocation>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_priority_level` is never used
[INFO] [stdout]  --> src/engine/priority.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn compute_priority_level(
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sort_claim_lines` is never used
[INFO] [stdout]   --> src/engine/priority.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn sort_claim_lines(lines: &mut [EffectiveClaimLine]) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `can_claim_on_round` is never used
[INFO] [stdout]  --> src/engine/policy.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn can_claim_on_round(status: &RoundStatus) -> bool {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `can_cancel_on_round` is never used
[INFO] [stdout]  --> src/engine/policy.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn can_cancel_on_round(status: &RoundStatus, allow_cancel: bool) -> bool {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `can_admin_modify_on_round` is never used
[INFO] [stdout]   --> src/engine/policy.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn can_admin_modify_on_round(status: &RoundStatus) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `event_status_to_str` is never used
[INFO] [stdout]   --> src/repo/postgres.rs:20:4
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn event_status_to_str(s: &EventStatus) -> &'static str {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `event_status_from_str` is never used
[INFO] [stdout]   --> src/repo/postgres.rs:27:4
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn event_status_from_str(s: &str) -> Option<EventStatus> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pool` is never read
[INFO] [stdout]   --> src/repo/postgres.rs:44:37
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct PgEventRepo { pub(crate) pool: PgPool }
[INFO] [stdout]    |            -----------              ^^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PgEventRepo` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pool` is never read
[INFO] [stdout]   --> src/repo/postgres.rs:56:36
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct PgUserRepo { pub(crate) pool: PgPool }
[INFO] [stdout]    |            ----------              ^^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PgUserRepo` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `row_to_item_alias` is never used
[INFO] [stdout]    --> src/repo/postgres.rs:106:4
[INFO] [stdout]     |
[INFO] [stdout] 106 | fn row_to_item_alias(row: &sqlx::postgres::PgRow) -> AppResult<ItemAlias> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `row_to_event_envelope` is never used
[INFO] [stdout]    --> src/repo/postgres.rs:116:4
[INFO] [stdout]     |
[INFO] [stdout] 116 | fn row_to_event_envelope(row: &sqlx::postgres::PgRow) -> AppResult<EventEnvelope> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `row_to_user` is never used
[INFO] [stdout]    --> src/repo/postgres.rs:167:4
[INFO] [stdout]     |
[INFO] [stdout] 167 | fn row_to_user(row: &sqlx::postgres::PgRow) -> AppResult<User> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `with_round_lock` is never used
[INFO] [stdout]    --> src/repo/postgres.rs:569:21
[INFO] [stdout]     |
[INFO] [stdout] 569 | pub(crate) async fn with_round_lock<F, Fut, T>(
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `find_by_id` and `find_all_by_group` are never used
[INFO] [stdout]   --> src/repo/round_repo.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub trait RoundRepo: Send + Sync {
[INFO] [stdout]    |           --------- methods in this trait
[INFO] [stdout] 15 |     async fn find_by_id(&self, round_id: &RoundId) -> AppResult<Option<Round>>;
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout] 16 |     async fn find_active_by_group(&self, group_id: &str) -> AppResult<Vec<Round>>;
[INFO] [stdout] 17 |     async fn find_all_by_group(&self, group_id: &str) -> AppResult<Vec<Round>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `find_by_id`, `insert`, and `find_aliases_by_round` are never used
[INFO] [stdout]   --> src/repo/round_repo.rs:25:14
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub trait ItemRepo: Send + Sync {
[INFO] [stdout]    |           -------- methods in this trait
[INFO] [stdout] 24 |     async fn find_by_round(&self, round_id: &RoundId) -> AppResult<Vec<Item>>;
[INFO] [stdout] 25 |     async fn find_by_id(&self, item_id: &ItemId) -> AppResult<Option<Item>>;
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout] 26 |     async fn insert(&self, item: &Item) -> AppResult<Item>;
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 27 |     async fn find_aliases_by_round(&self, round_id: &RoundId) -> AppResult<Vec<ItemAlias>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `insert`, `find_by_round`, `find_by_id`, and `get_max_sequence` are never used
[INFO] [stdout]   --> src/repo/round_repo.rs:32:14
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub trait EventRepo: Send + Sync {
[INFO] [stdout]    |           --------- methods in this trait
[INFO] [stdout] 32 |     async fn insert(&self, event: &EventEnvelope) -> AppResult<EventEnvelope>;
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 33 |     async fn find_by_round(&self, round_id: &RoundId) -> AppResult<Vec<EventEnvelope>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^
[INFO] [stdout] 34 |     async fn find_by_id(&self, event_id: &EventId) -> AppResult<Option<EventEnvelope>>;
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout] 35 |     async fn get_max_sequence(&self, round_id: &RoundId) -> AppResult<i64>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `save_settlement` is never used
[INFO] [stdout]   --> src/repo/round_repo.rs:41:14
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub trait SnapshotRepo: Send + Sync {
[INFO] [stdout]    |           ------------ method in this trait
[INFO] [stdout] 40 |     async fn save_allocation(&self, snapshot: &AllocationSnapshot) -> AppResult<()>;
[INFO] [stdout] 41 |     async fn save_settlement(&self, snapshot: &SettlementSnapshot) -> AppResult<()>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `find_by_user_and_round` and `insert` are never used
[INFO] [stdout]   --> src/repo/round_repo.rs:67:14
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub trait EligibilityRepo: Send + Sync {
[INFO] [stdout]    |           --------------- methods in this trait
[INFO] [stdout] 66 |     async fn find_by_round(&self, round_id: &RoundId) -> AppResult<Vec<Eligibility>>;
[INFO] [stdout] 67 |     async fn find_by_user_and_round(&self, user_id: &UserId, round_id: &RoundId) -> AppResult<Vec<Eligibility>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 68 |     async fn insert(&self, eligibility: &Eligibility) -> AppResult<Eligibility>;
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `GroupId` is never used
[INFO] [stdout]  --> src/repo/user_repo.rs:7:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub type GroupId = String;
[INFO] [stdout]   |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `find_by_id`, `find_by_qq_id`, and `upsert` are never used
[INFO] [stdout]   --> src/repo/user_repo.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub trait UserRepo: Send + Sync {
[INFO] [stdout]    |           -------- methods in this trait
[INFO] [stdout] 11 |     async fn find_by_id(&self, user_id: &UserId) -> AppResult<Option<User>>;
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout] 12 |     async fn find_by_qq_id(&self, qq_id: &str) -> AppResult<Option<User>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^
[INFO] [stdout] 13 |     async fn upsert(&self, user: &User) -> AppResult<User>;
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pool` is never read
[INFO] [stdout]   --> src/services/message_service.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct MessageService {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub pool: Option<sqlx::PgPool>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `eligibility_repo`, `round_repo`, `item_repo`, and `event_store` are never read
[INFO] [stdout]   --> src/services/admin_service.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct AdminService {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 13 |     pub eligibility_repo: Arc<dyn EligibilityRepo>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 14 |     pub round_repo: Arc<dyn RoundRepo>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 15 |     pub item_repo: Arc<dyn ItemRepo>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 16 |     pub event_store: Arc<dyn EventStore>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_eligibility`, `add_item`, `set_discount_rules`, `close_round`, and `export_round` are never used
[INFO] [stdout]   --> src/services/admin_service.rs:29:18
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl AdminService {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub async fn add_eligibility(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub async fn add_item(&self, round_id: RoundId, name: String, kind: String, unit_price_cents: i64, box_size: Option<u32>, max_qu...
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub async fn set_discount_rules(&self, round_id: RoundId, rules: Vec<DiscountRule>, source_text: String, user_id: crate::domain:...
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     pub async fn close_round(&self, round_id: &RoundId, _user_id: crate::domain::ids::UserId) -> AppResult<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub async fn export_round(&self, _round_id: &RoundId) -> AppResult<String> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ClaimService` is never constructed
[INFO] [stdout]  --> src/services/claim_service.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct ClaimService {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `get_items_for_round` are never used
[INFO] [stdout]   --> src/services/claim_service.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl ClaimService {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 13 |     pub fn new(item_repo: Arc<dyn ItemRepo>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub async fn get_items_for_round(&self, round_id: &RoundId) -> AppResult<Vec<Item>> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `event_store` is never read
[INFO] [stdout]  --> src/services/cancel_service.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct CancelService {
[INFO] [stdout]   |            ------------- field in this struct
[INFO] [stdout] 8 |     pub event_store: Arc<dyn EventStore>,
[INFO] [stdout]   |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `cancel_claim` is never used
[INFO] [stdout]   --> src/services/cancel_service.rs:16:18
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl CancelService {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub async fn cancel_claim(
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `settlement_engine` is never read
[INFO] [stdout]   --> src/services/settlement_service.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct SettlementService {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] 10 |     pub settlement_engine: SettlementEngine,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `export_item_summary` and `export_order_helper` are never used
[INFO] [stdout]   --> src/services/export_service.rs:56:12
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl ExportService {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn export_item_summary(&self, snapshot: &SettlementSnapshot) -> Result<Vec<u8>, ExportError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub fn export_order_helper(&self, snapshot: &SettlementSnapshot) -> Result<Vec<u8>, ExportError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `publish_versioned` is never used
[INFO] [stdout]   --> src/publisher/r2_publisher.rs:10:14
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub trait SnapshotPublisher: Send + Sync {
[INFO] [stdout]    |           ----------------- method in this trait
[INFO] [stdout]  9 |     async fn publish_current(&self, round_id: &RoundId, snapshot: &PublicSnapshot) -> Result<(), PublishError>;
[INFO] [stdout] 10 |     async fn publish_versioned(&self, round_id: &RoundId, version: i64, snapshot: &PublicSnapshot) -> Result<(), PublishError>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `R2Publisher` is never constructed
[INFO] [stdout]   --> src/publisher/r2_publisher.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct R2Publisher {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/publisher/r2_publisher.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl R2Publisher {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 19 |     pub fn new(bucket: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LocalPublisher` is never constructed
[INFO] [stdout]  --> src/publisher/local_publisher.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct LocalPublisher {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/publisher/local_publisher.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl LocalPublisher {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 13 |     pub fn new(base_path: PathBuf) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayEngine` is never constructed
[INFO] [stdout]   --> src/replay/replay_engine.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct ReplayEngine {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `replay`, and `apply_event_with_trace` are never used
[INFO] [stdout]   --> src/replay/replay_engine.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl ReplayEngine {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 20 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub async fn replay(
[INFO] [stdout]    |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93 |     async fn apply_event_with_trace(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayRuntimeState` is never constructed
[INFO] [stdout]    --> src/replay/replay_engine.rs:167:12
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub struct ReplayRuntimeState {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `to_allocation_snapshot`, `add_claim`, and `apply_cancel` are never used
[INFO] [stdout]    --> src/replay/replay_engine.rs:178:8
[INFO] [stdout]     |
[INFO] [stdout] 177 | impl ReplayRuntimeState {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout] 178 |     fn new(config: RoundConfig) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     fn to_allocation_snapshot(&self) -> AllocationSnapshot {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     fn add_claim(&mut self, claim: &crate::domain::event::ClaimCreated, event: &EventEnvelope) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     fn apply_cancel(&mut self, user_id: &UserId, cancel: &crate::domain::event::ClaimCancelled) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayOptions` is never constructed
[INFO] [stdout]    --> src/replay/replay_engine.rs:277:12
[INFO] [stdout]     |
[INFO] [stdout] 277 | pub struct ReplayOptions {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayResult` is never constructed
[INFO] [stdout]    --> src/replay/replay_engine.rs:294:12
[INFO] [stdout]     |
[INFO] [stdout] 294 | pub struct ReplayResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayStep` is never constructed
[INFO] [stdout]    --> src/replay/replay_engine.rs:303:12
[INFO] [stdout]     |
[INFO] [stdout] 303 | pub struct ReplayStep {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayWarning` is never constructed
[INFO] [stdout]    --> src/replay/replay_engine.rs:322:12
[INFO] [stdout]     |
[INFO] [stdout] 322 | pub struct ReplayWarning {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayStepError` is never constructed
[INFO] [stdout]    --> src/replay/replay_engine.rs:328:12
[INFO] [stdout]     |
[INFO] [stdout] 328 | pub struct ReplayStepError {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayCursor` is never constructed
[INFO] [stdout]  --> src/replay/replay_cursor.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ReplayCursor {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/replay/replay_cursor.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl ReplayCursor {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 13 |     pub fn new(replay_id: String, round_id: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ParserMode` is never used
[INFO] [stdout]  --> src/replay/replay_options.rs:5:10
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub enum ParserMode {
[INFO] [stdout]   |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TimelineSnapshotRecord` is never constructed
[INFO] [stdout]  --> src/replay/timeline_snapshot.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct TimelineSnapshotRecord {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SnapshotKind` is never used
[INFO] [stdout]   --> src/replay/timeline_snapshot.rs:21:10
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub enum SnapshotKind {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `full` and `diff_only` are never used
[INFO] [stdout]   --> src/replay/timeline_snapshot.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl TimelineSnapshotRecord {
[INFO] [stdout]    | --------------------------- associated functions in this implementation
[INFO] [stdout] 27 |     pub fn full(replay_id: String, round_id: String, step_index: u64, full_snapshot: AllocationSnapshot) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn diff_only(replay_id: String, round_id: String, step_index: u64, diff: StateDiff) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StateDiff` is never constructed
[INFO] [stdout]  --> src/replay/state_diff.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct StateDiff {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `from_snapshots` and `empty` are never used
[INFO] [stdout]    --> src/replay/state_diff.rs:18:12
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl StateDiff {
[INFO] [stdout]     | -------------- associated functions in this implementation
[INFO] [stdout]  18 |     pub fn from_snapshots(before: &AllocationSnapshot, after: &AllocationSnapshot) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub fn empty() -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SlotChange` is never constructed
[INFO] [stdout]    --> src/replay/state_diff.rs:209:12
[INFO] [stdout]     |
[INFO] [stdout] 209 | pub struct SlotChange {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SlotView` is never constructed
[INFO] [stdout]    --> src/replay/state_diff.rs:220:12
[INFO] [stdout]     |
[INFO] [stdout] 220 | pub struct SlotView {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SlotChangeReason` is never used
[INFO] [stdout]    --> src/replay/state_diff.rs:231:10
[INFO] [stdout]     |
[INFO] [stdout] 231 | pub enum SlotChangeReason {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ChangeCausality` is never used
[INFO] [stdout]    --> src/replay/state_diff.rs:243:10
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub enum ChangeCausality {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ClaimChange` is never constructed
[INFO] [stdout]    --> src/replay/state_diff.rs:250:12
[INFO] [stdout]     |
[INFO] [stdout] 250 | pub struct ClaimChange {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserTotalChange` is never constructed
[INFO] [stdout]    --> src/replay/state_diff.rs:257:12
[INFO] [stdout]     |
[INFO] [stdout] 257 | pub struct UserTotalChange {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ItemTotalChange` is never constructed
[INFO] [stdout]    --> src/replay/state_diff.rs:264:12
[INFO] [stdout]     |
[INFO] [stdout] 264 | pub struct ItemTotalChange {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SettlementChange` is never constructed
[INFO] [stdout]    --> src/replay/state_diff.rs:271:12
[INFO] [stdout]     |
[INFO] [stdout] 271 | pub struct SettlementChange {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayReport` is never constructed
[INFO] [stdout]  --> src/replay/replay_report.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ReplayReport {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/replay/replay_report.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl ReplayReport {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 15 |     pub fn new(replay_id: String, round_id: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayStepSummary` is never constructed
[INFO] [stdout]   --> src/replay/replay_report.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct ReplayStepSummary {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ReplayStepStatus` is never used
[INFO] [stdout]   --> src/replay/replay_report.rs:45:10
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub enum ReplayStepStatus {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FailedReplayStep` is never constructed
[INFO] [stdout]   --> src/replay/replay_report.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct FailedReplayStep {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FailureStage` is never used
[INFO] [stdout]   --> src/replay/replay_report.rs:67:10
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub enum FailureStage {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_jsonl_queue_file` is never used
[INFO] [stdout]   --> src/simulation/queue_file.rs:25:14
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub async fn read_jsonl_queue_file(path: &str) -> anyhow::Result<Vec<QueueMessageRecord>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SimulationRunner` is never constructed
[INFO] [stdout]  --> src/simulation/simulation_runner.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct SimulationRunner {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `run` are never used
[INFO] [stdout]   --> src/simulation/simulation_runner.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl SimulationRunner {
[INFO] [stdout]    | --------------------- associated items in this implementation
[INFO] [stdout] 15 |     pub fn new(parser: Arc<MessageParser>, validator: EventValidator) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub async fn run(&self, input: SimulationInput) -> anyhow::Result<SimulationReport> {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SimulationInput` is never constructed
[INFO] [stdout]    --> src/simulation/simulation_runner.rs:131:12
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub struct SimulationInput {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SimulationReport` is never constructed
[INFO] [stdout]  --> src/simulation/simulation_report.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct SimulationReport {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_round` is never used
[INFO] [stdout]  --> src/simulation/fixtures.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn fixture_round() -> Round {
[INFO] [stdout]   |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_single_item` is never used
[INFO] [stdout]   --> src/simulation/fixtures.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub fn fixture_single_item(item_id: &str, name: &str, price_cents: i64, max_quantity: u32) -> Item {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_eligibility` is never used
[INFO] [stdout]   --> src/simulation/fixtures.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn fixture_eligibility(user_id: &str, priority_level: i32, item_ids: Vec<&str>) -> Eligibility {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AuditDecisionTrace` is never constructed
[INFO] [stdout]  --> src/audit/decision_trace.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct AuditDecisionTrace {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/audit/decision_trace.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl AuditDecisionTrace {
[INFO] [stdout]    | ----------------------- associated function in this implementation
[INFO] [stdout] 16 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RuleTrace` is never constructed
[INFO] [stdout]  --> src/audit/rule_trace.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct RuleTrace {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AuditParseTrace` is never constructed
[INFO] [stdout]  --> src/audit/parse_trace.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct AuditParseTrace {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AuditAllocationTrace` is never constructed
[INFO] [stdout]  --> src/audit/allocation_trace.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct AuditAllocationTrace {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SlotDetail` is never constructed
[INFO] [stdout]   --> src/audit/allocation_trace.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct SlotDetail {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `TimelineStore` is never used
[INFO] [stdout]  --> src/storage/timeline_store.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub trait TimelineStore: Send + Sync {
[INFO] [stdout]   |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InMemoryTimelineStore` is never constructed
[INFO] [stdout]   --> src/storage/timeline_store.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct InMemoryTimelineStore {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/storage/timeline_store.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl InMemoryTimelineStore {
[INFO] [stdout]    | -------------------------- associated function in this implementation
[INFO] [stdout] 21 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `reload_tx` is never read
[INFO] [stdout]   --> src/ws/ws_server.rs:58:5
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct WsServer {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 58 |     reload_tx: watch::Sender<u64>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `shutdown`, `request_reload`, and `get_status` are never used
[INFO] [stdout]    --> src/ws/ws_server.rs:189:18
[INFO] [stdout]     |
[INFO] [stdout]  62 | impl WsServer {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub async fn shutdown(&self) {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub async fn request_reload(&self) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub async fn get_status(&self) -> WsServerStatus {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Unauthorized` and `Conflict` are never constructed
[INFO] [stdout]   --> src/error.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum AppError {
[INFO] [stdout]    |          -------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 39 |     Unauthorized(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     Conflict(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AppError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `EmptyResponse`, `RateLimited`, and `TokenLimitExceeded` are never constructed
[INFO] [stdout]   --> src/error.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub enum LlmError {
[INFO] [stdout]    |          -------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 57 |     EmptyResponse,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     RateLimited,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     TokenLimitExceeded,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LlmError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `MissingField`, `UnknownIntent`, `LowConfidence`, `UnknownItem`, `AmbiguousItem`, and `AdminCommandParse` are never constructed
[INFO] [stdout]   --> src/error.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub enum ParseError {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 72 |     MissingField(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     UnknownIntent(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |     LowConfidence(f32),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     UnknownItem(String),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 90 |     AmbiguousItem(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93 |     AdminCommandParse(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ParseError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]    --> src/error.rs:99:5
[INFO] [stdout]     |
[INFO] [stdout]  97 | pub enum ValidationError {
[INFO] [stdout]     |          --------------- variants in this enum
[INFO] [stdout]  98 |     #[error("Round not active: {0}")]
[INFO] [stdout]  99 |     RoundNotActive(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     RoundNotFound(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     UserNotFound(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     ItemNotFound(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     ExceedsMaxQuantity(String, u32, u32),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     DuplicateClaim(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     InvalidCancelTarget(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     PermissionDenied(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     TimeWindowNotOpen,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     NeedConfirmation(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ValidationError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `NoAvailableSlots`, `SlotAlreadyFilled`, `SlotLocked`, `ExceedsRemaining`, and `SegmentConflict` are never constructed
[INFO] [stdout]    --> src/error.rs:132:5
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub enum AllocationError {
[INFO] [stdout]     |          --------------- variants in this enum
[INFO] [stdout] 131 |     #[error("No available slots for item {0}")]
[INFO] [stdout] 132 |     NoAvailableSlots(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     SlotAlreadyFilled(String, u32, u32),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     SlotLocked(String, u32, u32),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     ExceedsRemaining(u32),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     SegmentConflict(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AllocationError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `DiscountExceedsGross`, `NegativePayable`, `GiftItemNotFound`, `InvalidDiscountRule`, and `RoundingError` are never constructed
[INFO] [stdout]    --> src/error.rs:150:5
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub enum SettlementError {
[INFO] [stdout]     |          --------------- variants in this enum
[INFO] [stdout] 149 |     #[error("Discount exceeds gross: gross={0}, discount={1}")]
[INFO] [stdout] 150 |     DiscountExceedsGross(i64, i64),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     NegativePayable(String, i64),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     GiftItemNotFound(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     InvalidDiscountRule(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     RoundingError(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SettlementError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `EventNotFound`, `SequenceConflict`, `EventAlreadyExists`, and `InvalidEventType` are never constructed
[INFO] [stdout]    --> src/error.rs:168:5
[INFO] [stdout]     |
[INFO] [stdout] 166 | pub enum EventError {
[INFO] [stdout]     |          ---------- variants in this enum
[INFO] [stdout] 167 |     #[error("Event not found: {0}")]
[INFO] [stdout] 168 |     EventNotFound(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     SequenceConflict(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     EventAlreadyExists(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     InvalidEventType(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EventError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ReplayNotFound`, `ConfigHashMismatch`, and `SnapshotRestoreFailed` are never constructed
[INFO] [stdout]    --> src/error.rs:183:5
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub enum ReplayError {
[INFO] [stdout]     |          ----------- variants in this enum
[INFO] [stdout] 182 |     #[error("Replay not found: {0}")]
[INFO] [stdout] 183 |     ReplayNotFound(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     ConfigHashMismatch(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     SnapshotRestoreFailed(u64, String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ReplayError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `R2Put` and `S3` are never constructed
[INFO] [stdout]    --> src/error.rs:204:5
[INFO] [stdout]     |
[INFO] [stdout] 202 | pub enum PublishError {
[INFO] [stdout]     |          ------------ variants in this enum
[INFO] [stdout] 203 |     #[error("R2 put error: {0}")]
[INFO] [stdout] 204 |     R2Put(String),
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     S3(String),
[INFO] [stdout]     |     ^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PublishError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `config`, `pool`, and `repo` are never read
[INFO] [stdout]   --> src/app_state.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct AppState {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 31 |     pub config: Config,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 32 |     pub pool: PgPool,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 33 |     pub repo: Arc<RepoSet>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/app_state.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub struct RepoSet {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 38 |     pub round: Arc<dyn RoundRepo>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 39 |     pub item: Arc<dyn ItemRepo>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 40 |     pub event: Arc<dyn EventRepo>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 41 |     pub snapshot: Arc<dyn SnapshotRepo>,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 42 |     pub raw_message: Arc<dyn RawMessageRepo>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 43 |     pub eligibility: Arc<dyn EligibilityRepo>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 44 |     pub user: Arc<dyn UserRepo>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `admin` and `cancel` are never read
[INFO] [stdout]   --> src/app_state.rs:49:9
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct ServiceSet {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 48 |     pub round: Arc<RoundService>,
[INFO] [stdout] 49 |     pub admin: Arc<AdminService>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 50 |     pub message: Arc<MessageService>,
[INFO] [stdout] 51 |     pub cancel: Arc<CancelService>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AliasId` is never constructed
[INFO] [stdout]   --> src/domain/ids.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct AliasId(pub String);
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayId` is never constructed
[INFO] [stdout]   --> src/domain/ids.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct ReplayId(pub String);
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_yuan`, `from_yuan_float`, `to_yuan_float`, and `checked_div_i64` are never used
[INFO] [stdout]   --> src/domain/money.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl MoneyCents {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub fn from_yuan(yuan: i64) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub fn from_yuan_float(yuan: f64) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub fn to_yuan_float(self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn checked_div_i64(self, n: i64) -> Option<Self> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Timestamp` is never used
[INFO] [stdout]  --> src/domain/time.rs:3:10
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub type Timestamp = DateTime<Utc>;
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `utc_now` is never used
[INFO] [stdout]  --> src/domain/time.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn utc_now() -> Timestamp {
[INFO] [stdout]   |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `now_millis` is never used
[INFO] [stdout]  --> src/domain/time.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn now_millis() -> i64 {
[INFO] [stdout]   |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `User` is never constructed
[INFO] [stdout]  --> src/domain/user.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct User {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/domain/user.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl User {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 16 |     pub fn new(user_id: UserId, qq_id: String, display_name: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `allows_admin_commands` is never used
[INFO] [stdout]   --> src/domain/round.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl RoundStatus {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn allows_admin_commands(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_active_at` is never used
[INFO] [stdout]   --> src/domain/round.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl Round {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] 66 |     pub fn is_active_at(&self, at: DateTime<Utc>) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RoundConfig` is never constructed
[INFO] [stdout]   --> src/domain/round.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct RoundConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `matches_name_or_alias`, `exact_matches_item_id`, and `exact_matches_name` are never used
[INFO] [stdout]   --> src/domain/item.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl Item {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] 66 |     pub fn matches_name_or_alias(&self, name: &str) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn exact_matches_item_id(&self, id: &str) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn exact_matches_name(&self, name: &str) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ItemAlias` is never constructed
[INFO] [stdout]   --> src/domain/item.rs:86:12
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub struct ItemAlias {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_str` is never used
[INFO] [stdout]   --> src/domain/claim.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl ClaimType {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] 14 |     pub fn as_str(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new_split`, `new_single`, and `new_tail_locked` are never used
[INFO] [stdout]   --> src/domain/claim.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 61 | impl ClaimLine {
[INFO] [stdout]    | -------------- associated functions in this implementation
[INFO] [stdout] 62 |     pub fn new_split(item_id: impl Into<ItemId>, quantity: u32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn new_single(item_id: impl Into<ItemId>, quantity: u32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn new_tail_locked(item_id: impl Into<ItemId>, quantity: u32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `applies_to_item_kind` is never used
[INFO] [stdout]    --> src/domain/claim.rs:176:12
[INFO] [stdout]     |
[INFO] [stdout] 166 | impl Eligibility {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn applies_to_item_kind(&self, kind: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `event_type_str` is never used
[INFO] [stdout]   --> src/domain/event.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl DomainEvent {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 23 |     pub fn event_type_str(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `event_id`, `raw_message_id_str`, and `occurred_at` are never used
[INFO] [stdout]   --> src/domain/event.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | impl EventEnvelope {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] 54 |     pub fn event_id(&self) -> &EventId {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn raw_message_id_str(&self) -> Option<&str> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn occurred_at(&self) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EventOrderKey` is never constructed
[INFO] [stdout]    --> src/domain/event.rs:181:12
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub struct EventOrderKey {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compare_claim_line_order` is never used
[INFO] [stdout]    --> src/domain/event.rs:193:8
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub fn compare_claim_line_order(a: &crate::domain::claim::EffectiveClaimLine,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `user_id_str` is never used
[INFO] [stdout]   --> src/domain/allocation.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | impl SlotAllocation {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn user_id_str(&self) -> Option<&str> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `slot`, `slot_mut`, and `first_empty_normal_slot` are never used
[INFO] [stdout]   --> src/domain/allocation.rs:83:12
[INFO] [stdout]    |
[INFO] [stdout] 82 | impl BoxAllocation {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 83 |     pub fn new(box_index: u32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 90 |     pub fn slot(&self, index: usize) -> Option<&SlotAllocation> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 94 |     pub fn slot_mut(&mut self, index: usize) -> Option<&mut SlotAllocation> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub fn first_empty_normal_slot(&self) -> Option<usize> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `box_at`, `box_at_mut`, and `get_or_create_box` are never used
[INFO] [stdout]    --> src/domain/allocation.rs:114:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | impl ItemAllocation {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] 114 |     pub fn box_at(&self, index: u32) -> Option<&BoxAllocation> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn box_at_mut(&mut self, index: u32) -> Option<&mut BoxAllocation> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn get_or_create_box(&mut self, box_index: u32) -> &mut BoxAllocation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `negative_discount_total` is never used
[INFO] [stdout]   --> src/domain/settlement.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | impl UserBill {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 49 |     pub fn negative_discount_total(&self) -> MoneyCents {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `item` is never used
[INFO] [stdout]   --> src/domain/snapshot.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl AllocationSnapshot {
[INFO] [stdout]    | ----------------------- method in this implementation
[INFO] [stdout] 18 |     pub fn item(&self, name: &str) -> Option<&ItemAllocation> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AdminSlotView` is never constructed
[INFO] [stdout]   --> src/domain/snapshot.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct AdminSlotView {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `short_ack_for_user` is never used
[INFO] [stdout]    --> src/domain/snapshot.rs:135:12
[INFO] [stdout]     |
[INFO] [stdout]  97 | impl AllocationSnapshot {
[INFO] [stdout]     | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn short_ack_for_user(&self, user_id: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PriorityTrace` is never constructed
[INFO] [stdout]    --> src/domain/snapshot.rs:167:12
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub struct PriorityTrace {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AllocationTraceItem` is never constructed
[INFO] [stdout]    --> src/domain/snapshot.rs:175:12
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub struct AllocationTraceItem {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DecisionTrace` is never constructed
[INFO] [stdout]    --> src/domain/snapshot.rs:186:12
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub struct DecisionTrace {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SettlementTraceItem` is never constructed
[INFO] [stdout]    --> src/domain/snapshot.rs:195:12
[INFO] [stdout]     |
[INFO] [stdout] 195 | pub struct SettlementTraceItem {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `empty_with_note` is never used
[INFO] [stdout]    --> src/domain/snapshot.rs:201:12
[INFO] [stdout]     |
[INFO] [stdout] 200 | impl DecisionTrace {
[INFO] [stdout]     | ------------------ associated function in this implementation
[INFO] [stdout] 201 |     pub fn empty_with_note(note: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ItemSummaryRow` is never constructed
[INFO] [stdout]  --> src/domain/export.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct ItemSummaryRow {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserBillRow` is never constructed
[INFO] [stdout]   --> src/domain/export.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct UserBillRow {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderHelperRow` is never constructed
[INFO] [stdout]   --> src/domain/export.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct OrderHelperRow {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DiscountRulesSet` is never constructed
[INFO] [stdout]  --> src/domain/discount.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct DiscountRulesSet {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `rule_id` is never used
[INFO] [stdout]   --> src/domain/discount.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | impl DiscountRule {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] 47 |     pub fn rule_id(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GiftRule` is never constructed
[INFO] [stdout]  --> src/domain/gift.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct GiftRule {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_gift_quantity` is never used
[INFO] [stdout]   --> src/domain/gift.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn compute_gift_quantity(scoped_total: MoneyCents, threshold: MoneyCents) -> u32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_admin_command_candidate` and `is_admin` are never used
[INFO] [stdout]   --> src/inbound/qq_message.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl IncomingQqMessage {
[INFO] [stdout]    | ---------------------- methods in this implementation
[INFO] [stdout] 17 |     pub fn is_admin_command_candidate(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn is_admin(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `need_confirm`, `is_silent`, and `text_content` are never used
[INFO] [stdout]   --> src/inbound/command_router.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl BotReply {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn need_confirm(text: impl Into<String>, token: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn is_silent(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn text_content(&self) -> Option<&str> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_system_prompt` is never used
[INFO] [stdout]  --> src/parser/prompt.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn build_system_prompt() -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_str` is never used
[INFO] [stdout]   --> src/parser/parsed_event.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl ParsedIntent {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] 20 |     pub fn as_str(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParseCacheEntry` is never constructed
[INFO] [stdout]  --> src/parser/parse_cache.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct ParseCacheEntry {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParseCache` is never constructed
[INFO] [stdout]   --> src/parser/parse_cache.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct ParseCache {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get`, `insert`, and `len` are never used
[INFO] [stdout]   --> src/parser/parse_cache.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl ParseCache {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 22 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn get(&self, raw_message_id: &str, input_hash: &str) -> Option<&ParseCacheEntry> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn insert(&mut self, entry: ParseCacheEntry) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn len(&self) -> usize {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_input_hash` is never used
[INFO] [stdout]   --> src/parser/parse_cache.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn compute_input_hash(text: &str, group_id: &str, user_id: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParseContext` is never constructed
[INFO] [stdout]   --> src/parser/parse_cache.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct ParseContext {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/parser/parse_cache.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl ParseCacheEntry {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 57 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_with_mode` is never used
[INFO] [stdout]   --> src/parser/parse_cache.rs:76:14
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub async fn parse_with_mode(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `read_after_sequence` is never used
[INFO] [stdout]   --> src/engine/event_store.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub trait EventStore: Send + Sync {
[INFO] [stdout]    |           ---------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 11 |     async fn read_after_sequence(&self, round_id: &RoundId, after_sequence: i64) -> AppResult<Vec<EventEnvelope>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `next_slot_in_box` is never read
[INFO] [stdout]    --> src/engine/allocation_engine.rs:249:5
[INFO] [stdout]     |
[INFO] [stdout] 243 | struct ItemWorkingState {
[INFO] [stdout]     |        ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 249 |     next_slot_in_box: HashMap<u32, u32>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `gift_valuations` is never read
[INFO] [stdout]   --> src/engine/settlement_engine.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct SettlementInput {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub gift_valuations: Vec<crate::domain::gift::GiftAllocation>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_priority_level` is never used
[INFO] [stdout]  --> src/engine/priority.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn compute_priority_level(
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sort_claim_lines` is never used
[INFO] [stdout]   --> src/engine/priority.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn sort_claim_lines(lines: &mut [EffectiveClaimLine]) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `can_claim_on_round` is never used
[INFO] [stdout]  --> src/engine/policy.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn can_claim_on_round(status: &RoundStatus) -> bool {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `can_cancel_on_round` is never used
[INFO] [stdout]  --> src/engine/policy.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn can_cancel_on_round(status: &RoundStatus, allow_cancel: bool) -> bool {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `can_admin_modify_on_round` is never used
[INFO] [stdout]   --> src/engine/policy.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn can_admin_modify_on_round(status: &RoundStatus) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `event_status_to_str` is never used
[INFO] [stdout]   --> src/repo/postgres.rs:20:4
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn event_status_to_str(s: &EventStatus) -> &'static str {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `event_status_from_str` is never used
[INFO] [stdout]   --> src/repo/postgres.rs:27:4
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn event_status_from_str(s: &str) -> Option<EventStatus> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pool` is never read
[INFO] [stdout]   --> src/repo/postgres.rs:44:37
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct PgEventRepo { pub(crate) pool: PgPool }
[INFO] [stdout]    |            -----------              ^^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PgEventRepo` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pool` is never read
[INFO] [stdout]   --> src/repo/postgres.rs:56:36
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct PgUserRepo { pub(crate) pool: PgPool }
[INFO] [stdout]    |            ----------              ^^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PgUserRepo` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `row_to_item_alias` is never used
[INFO] [stdout]    --> src/repo/postgres.rs:106:4
[INFO] [stdout]     |
[INFO] [stdout] 106 | fn row_to_item_alias(row: &sqlx::postgres::PgRow) -> AppResult<ItemAlias> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `row_to_event_envelope` is never used
[INFO] [stdout]    --> src/repo/postgres.rs:116:4
[INFO] [stdout]     |
[INFO] [stdout] 116 | fn row_to_event_envelope(row: &sqlx::postgres::PgRow) -> AppResult<EventEnvelope> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `row_to_user` is never used
[INFO] [stdout]    --> src/repo/postgres.rs:167:4
[INFO] [stdout]     |
[INFO] [stdout] 167 | fn row_to_user(row: &sqlx::postgres::PgRow) -> AppResult<User> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `with_round_lock` is never used
[INFO] [stdout]    --> src/repo/postgres.rs:569:21
[INFO] [stdout]     |
[INFO] [stdout] 569 | pub(crate) async fn with_round_lock<F, Fut, T>(
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `find_by_id` and `find_all_by_group` are never used
[INFO] [stdout]   --> src/repo/round_repo.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub trait RoundRepo: Send + Sync {
[INFO] [stdout]    |           --------- methods in this trait
[INFO] [stdout] 15 |     async fn find_by_id(&self, round_id: &RoundId) -> AppResult<Option<Round>>;
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout] 16 |     async fn find_active_by_group(&self, group_id: &str) -> AppResult<Vec<Round>>;
[INFO] [stdout] 17 |     async fn find_all_by_group(&self, group_id: &str) -> AppResult<Vec<Round>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `find_by_id`, `insert`, and `find_aliases_by_round` are never used
[INFO] [stdout]   --> src/repo/round_repo.rs:25:14
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub trait ItemRepo: Send + Sync {
[INFO] [stdout]    |           -------- methods in this trait
[INFO] [stdout] 24 |     async fn find_by_round(&self, round_id: &RoundId) -> AppResult<Vec<Item>>;
[INFO] [stdout] 25 |     async fn find_by_id(&self, item_id: &ItemId) -> AppResult<Option<Item>>;
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout] 26 |     async fn insert(&self, item: &Item) -> AppResult<Item>;
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 27 |     async fn find_aliases_by_round(&self, round_id: &RoundId) -> AppResult<Vec<ItemAlias>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `insert`, `find_by_round`, `find_by_id`, and `get_max_sequence` are never used
[INFO] [stdout]   --> src/repo/round_repo.rs:32:14
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub trait EventRepo: Send + Sync {
[INFO] [stdout]    |           --------- methods in this trait
[INFO] [stdout] 32 |     async fn insert(&self, event: &EventEnvelope) -> AppResult<EventEnvelope>;
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 33 |     async fn find_by_round(&self, round_id: &RoundId) -> AppResult<Vec<EventEnvelope>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^
[INFO] [stdout] 34 |     async fn find_by_id(&self, event_id: &EventId) -> AppResult<Option<EventEnvelope>>;
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout] 35 |     async fn get_max_sequence(&self, round_id: &RoundId) -> AppResult<i64>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `save_settlement` is never used
[INFO] [stdout]   --> src/repo/round_repo.rs:41:14
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub trait SnapshotRepo: Send + Sync {
[INFO] [stdout]    |           ------------ method in this trait
[INFO] [stdout] 40 |     async fn save_allocation(&self, snapshot: &AllocationSnapshot) -> AppResult<()>;
[INFO] [stdout] 41 |     async fn save_settlement(&self, snapshot: &SettlementSnapshot) -> AppResult<()>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `find_by_user_and_round` and `insert` are never used
[INFO] [stdout]   --> src/repo/round_repo.rs:67:14
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub trait EligibilityRepo: Send + Sync {
[INFO] [stdout]    |           --------------- methods in this trait
[INFO] [stdout] 66 |     async fn find_by_round(&self, round_id: &RoundId) -> AppResult<Vec<Eligibility>>;
[INFO] [stdout] 67 |     async fn find_by_user_and_round(&self, user_id: &UserId, round_id: &RoundId) -> AppResult<Vec<Eligibility>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 68 |     async fn insert(&self, eligibility: &Eligibility) -> AppResult<Eligibility>;
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `GroupId` is never used
[INFO] [stdout]  --> src/repo/user_repo.rs:7:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub type GroupId = String;
[INFO] [stdout]   |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `find_by_id`, `find_by_qq_id`, and `upsert` are never used
[INFO] [stdout]   --> src/repo/user_repo.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub trait UserRepo: Send + Sync {
[INFO] [stdout]    |           -------- methods in this trait
[INFO] [stdout] 11 |     async fn find_by_id(&self, user_id: &UserId) -> AppResult<Option<User>>;
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout] 12 |     async fn find_by_qq_id(&self, qq_id: &str) -> AppResult<Option<User>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^
[INFO] [stdout] 13 |     async fn upsert(&self, user: &User) -> AppResult<User>;
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pool` is never read
[INFO] [stdout]   --> src/services/message_service.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct MessageService {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub pool: Option<sqlx::PgPool>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `eligibility_repo`, `round_repo`, `item_repo`, and `event_store` are never read
[INFO] [stdout]   --> src/services/admin_service.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct AdminService {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 13 |     pub eligibility_repo: Arc<dyn EligibilityRepo>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 14 |     pub round_repo: Arc<dyn RoundRepo>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 15 |     pub item_repo: Arc<dyn ItemRepo>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 16 |     pub event_store: Arc<dyn EventStore>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_eligibility`, `add_item`, `set_discount_rules`, `close_round`, and `export_round` are never used
[INFO] [stdout]   --> src/services/admin_service.rs:29:18
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl AdminService {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub async fn add_eligibility(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub async fn add_item(&self, round_id: RoundId, name: String, kind: String, unit_price_cents: i64, box_size: Option<u32>, max_qu...
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub async fn set_discount_rules(&self, round_id: RoundId, rules: Vec<DiscountRule>, source_text: String, user_id: crate::domain:...
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     pub async fn close_round(&self, round_id: &RoundId, _user_id: crate::domain::ids::UserId) -> AppResult<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub async fn export_round(&self, _round_id: &RoundId) -> AppResult<String> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ClaimService` is never constructed
[INFO] [stdout]  --> src/services/claim_service.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct ClaimService {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `get_items_for_round` are never used
[INFO] [stdout]   --> src/services/claim_service.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl ClaimService {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 13 |     pub fn new(item_repo: Arc<dyn ItemRepo>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub async fn get_items_for_round(&self, round_id: &RoundId) -> AppResult<Vec<Item>> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `event_store` is never read
[INFO] [stdout]  --> src/services/cancel_service.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct CancelService {
[INFO] [stdout]   |            ------------- field in this struct
[INFO] [stdout] 8 |     pub event_store: Arc<dyn EventStore>,
[INFO] [stdout]   |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `cancel_claim` is never used
[INFO] [stdout]   --> src/services/cancel_service.rs:16:18
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl CancelService {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub async fn cancel_claim(
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `settlement_engine` is never read
[INFO] [stdout]   --> src/services/settlement_service.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct SettlementService {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] 10 |     pub settlement_engine: SettlementEngine,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `export_item_summary` and `export_order_helper` are never used
[INFO] [stdout]   --> src/services/export_service.rs:56:12
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl ExportService {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn export_item_summary(&self, snapshot: &SettlementSnapshot) -> Result<Vec<u8>, ExportError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub fn export_order_helper(&self, snapshot: &SettlementSnapshot) -> Result<Vec<u8>, ExportError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `publish_versioned` is never used
[INFO] [stdout]   --> src/publisher/r2_publisher.rs:10:14
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub trait SnapshotPublisher: Send + Sync {
[INFO] [stdout]    |           ----------------- method in this trait
[INFO] [stdout]  9 |     async fn publish_current(&self, round_id: &RoundId, snapshot: &PublicSnapshot) -> Result<(), PublishError>;
[INFO] [stdout] 10 |     async fn publish_versioned(&self, round_id: &RoundId, version: i64, snapshot: &PublicSnapshot) -> Result<(), PublishError>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `R2Publisher` is never constructed
[INFO] [stdout]   --> src/publisher/r2_publisher.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct R2Publisher {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/publisher/r2_publisher.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl R2Publisher {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 19 |     pub fn new(bucket: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LocalPublisher` is never constructed
[INFO] [stdout]  --> src/publisher/local_publisher.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct LocalPublisher {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/publisher/local_publisher.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl LocalPublisher {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 13 |     pub fn new(base_path: PathBuf) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayEngine` is never constructed
[INFO] [stdout]   --> src/replay/replay_engine.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct ReplayEngine {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `replay`, and `apply_event_with_trace` are never used
[INFO] [stdout]   --> src/replay/replay_engine.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl ReplayEngine {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 20 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub async fn replay(
[INFO] [stdout]    |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93 |     async fn apply_event_with_trace(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayRuntimeState` is never constructed
[INFO] [stdout]    --> src/replay/replay_engine.rs:167:12
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub struct ReplayRuntimeState {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `to_allocation_snapshot`, `add_claim`, and `apply_cancel` are never used
[INFO] [stdout]    --> src/replay/replay_engine.rs:178:8
[INFO] [stdout]     |
[INFO] [stdout] 177 | impl ReplayRuntimeState {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout] 178 |     fn new(config: RoundConfig) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     fn to_allocation_snapshot(&self) -> AllocationSnapshot {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     fn add_claim(&mut self, claim: &crate::domain::event::ClaimCreated, event: &EventEnvelope) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     fn apply_cancel(&mut self, user_id: &UserId, cancel: &crate::domain::event::ClaimCancelled) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayOptions` is never constructed
[INFO] [stdout]    --> src/replay/replay_engine.rs:277:12
[INFO] [stdout]     |
[INFO] [stdout] 277 | pub struct ReplayOptions {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayResult` is never constructed
[INFO] [stdout]    --> src/replay/replay_engine.rs:294:12
[INFO] [stdout]     |
[INFO] [stdout] 294 | pub struct ReplayResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayStep` is never constructed
[INFO] [stdout]    --> src/replay/replay_engine.rs:303:12
[INFO] [stdout]     |
[INFO] [stdout] 303 | pub struct ReplayStep {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayWarning` is never constructed
[INFO] [stdout]    --> src/replay/replay_engine.rs:322:12
[INFO] [stdout]     |
[INFO] [stdout] 322 | pub struct ReplayWarning {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayStepError` is never constructed
[INFO] [stdout]    --> src/replay/replay_engine.rs:328:12
[INFO] [stdout]     |
[INFO] [stdout] 328 | pub struct ReplayStepError {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayCursor` is never constructed
[INFO] [stdout]  --> src/replay/replay_cursor.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ReplayCursor {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/replay/replay_cursor.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl ReplayCursor {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 13 |     pub fn new(replay_id: String, round_id: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ParserMode` is never used
[INFO] [stdout]  --> src/replay/replay_options.rs:5:10
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub enum ParserMode {
[INFO] [stdout]   |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TimelineSnapshotRecord` is never constructed
[INFO] [stdout]  --> src/replay/timeline_snapshot.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct TimelineSnapshotRecord {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SnapshotKind` is never used
[INFO] [stdout]   --> src/replay/timeline_snapshot.rs:21:10
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub enum SnapshotKind {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `full` and `diff_only` are never used
[INFO] [stdout]   --> src/replay/timeline_snapshot.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl TimelineSnapshotRecord {
[INFO] [stdout]    | --------------------------- associated functions in this implementation
[INFO] [stdout] 27 |     pub fn full(replay_id: String, round_id: String, step_index: u64, full_snapshot: AllocationSnapshot) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn diff_only(replay_id: String, round_id: String, step_index: u64, diff: StateDiff) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StateDiff` is never constructed
[INFO] [stdout]  --> src/replay/state_diff.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct StateDiff {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `from_snapshots` and `empty` are never used
[INFO] [stdout]    --> src/replay/state_diff.rs:18:12
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl StateDiff {
[INFO] [stdout]     | -------------- associated functions in this implementation
[INFO] [stdout]  18 |     pub fn from_snapshots(before: &AllocationSnapshot, after: &AllocationSnapshot) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub fn empty() -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SlotChange` is never constructed
[INFO] [stdout]    --> src/replay/state_diff.rs:209:12
[INFO] [stdout]     |
[INFO] [stdout] 209 | pub struct SlotChange {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SlotView` is never constructed
[INFO] [stdout]    --> src/replay/state_diff.rs:220:12
[INFO] [stdout]     |
[INFO] [stdout] 220 | pub struct SlotView {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SlotChangeReason` is never used
[INFO] [stdout]    --> src/replay/state_diff.rs:231:10
[INFO] [stdout]     |
[INFO] [stdout] 231 | pub enum SlotChangeReason {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ChangeCausality` is never used
[INFO] [stdout]    --> src/replay/state_diff.rs:243:10
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub enum ChangeCausality {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ClaimChange` is never constructed
[INFO] [stdout]    --> src/replay/state_diff.rs:250:12
[INFO] [stdout]     |
[INFO] [stdout] 250 | pub struct ClaimChange {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserTotalChange` is never constructed
[INFO] [stdout]    --> src/replay/state_diff.rs:257:12
[INFO] [stdout]     |
[INFO] [stdout] 257 | pub struct UserTotalChange {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ItemTotalChange` is never constructed
[INFO] [stdout]    --> src/replay/state_diff.rs:264:12
[INFO] [stdout]     |
[INFO] [stdout] 264 | pub struct ItemTotalChange {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SettlementChange` is never constructed
[INFO] [stdout]    --> src/replay/state_diff.rs:271:12
[INFO] [stdout]     |
[INFO] [stdout] 271 | pub struct SettlementChange {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayReport` is never constructed
[INFO] [stdout]  --> src/replay/replay_report.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ReplayReport {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/replay/replay_report.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl ReplayReport {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 15 |     pub fn new(replay_id: String, round_id: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayStepSummary` is never constructed
[INFO] [stdout]   --> src/replay/replay_report.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct ReplayStepSummary {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ReplayStepStatus` is never used
[INFO] [stdout]   --> src/replay/replay_report.rs:45:10
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub enum ReplayStepStatus {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FailedReplayStep` is never constructed
[INFO] [stdout]   --> src/replay/replay_report.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct FailedReplayStep {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FailureStage` is never used
[INFO] [stdout]   --> src/replay/replay_report.rs:67:10
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub enum FailureStage {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_jsonl_queue_file` is never used
[INFO] [stdout]   --> src/simulation/queue_file.rs:25:14
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub async fn read_jsonl_queue_file(path: &str) -> anyhow::Result<Vec<QueueMessageRecord>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SimulationRunner` is never constructed
[INFO] [stdout]  --> src/simulation/simulation_runner.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct SimulationRunner {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `run` are never used
[INFO] [stdout]   --> src/simulation/simulation_runner.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl SimulationRunner {
[INFO] [stdout]    | --------------------- associated items in this implementation
[INFO] [stdout] 15 |     pub fn new(parser: Arc<MessageParser>, validator: EventValidator) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub async fn run(&self, input: SimulationInput) -> anyhow::Result<SimulationReport> {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SimulationInput` is never constructed
[INFO] [stdout]    --> src/simulation/simulation_runner.rs:131:12
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub struct SimulationInput {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SimulationReport` is never constructed
[INFO] [stdout]  --> src/simulation/simulation_report.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct SimulationReport {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_round` is never used
[INFO] [stdout]  --> src/simulation/fixtures.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn fixture_round() -> Round {
[INFO] [stdout]   |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_split_item` is never used
[INFO] [stdout]   --> src/simulation/fixtures.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn fixture_split_item(item_id: &str, name: &str, price_cents: i64, box_size: u32) -> Item {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_single_item` is never used
[INFO] [stdout]   --> src/simulation/fixtures.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub fn fixture_single_item(item_id: &str, name: &str, price_cents: i64, max_quantity: u32) -> Item {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_eligibility` is never used
[INFO] [stdout]   --> src/simulation/fixtures.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn fixture_eligibility(user_id: &str, priority_level: i32, item_ids: Vec<&str>) -> Eligibility {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AuditDecisionTrace` is never constructed
[INFO] [stdout]  --> src/audit/decision_trace.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct AuditDecisionTrace {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/audit/decision_trace.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl AuditDecisionTrace {
[INFO] [stdout]    | ----------------------- associated function in this implementation
[INFO] [stdout] 16 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RuleTrace` is never constructed
[INFO] [stdout]  --> src/audit/rule_trace.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct RuleTrace {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AuditParseTrace` is never constructed
[INFO] [stdout]  --> src/audit/parse_trace.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct AuditParseTrace {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AuditAllocationTrace` is never constructed
[INFO] [stdout]  --> src/audit/allocation_trace.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct AuditAllocationTrace {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SlotDetail` is never constructed
[INFO] [stdout]   --> src/audit/allocation_trace.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct SlotDetail {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `TimelineStore` is never used
[INFO] [stdout]  --> src/storage/timeline_store.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub trait TimelineStore: Send + Sync {
[INFO] [stdout]   |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InMemoryTimelineStore` is never constructed
[INFO] [stdout]   --> src/storage/timeline_store.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct InMemoryTimelineStore {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/storage/timeline_store.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl InMemoryTimelineStore {
[INFO] [stdout]    | -------------------------- associated function in this implementation
[INFO] [stdout] 21 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `reload_tx` is never read
[INFO] [stdout]   --> src/ws/ws_server.rs:58:5
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct WsServer {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 58 |     reload_tx: watch::Sender<u64>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `shutdown`, `request_reload`, and `get_status` are never used
[INFO] [stdout]    --> src/ws/ws_server.rs:189:18
[INFO] [stdout]     |
[INFO] [stdout]  62 | impl WsServer {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub async fn shutdown(&self) {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub async fn request_reload(&self) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub async fn get_status(&self) -> WsServerStatus {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 15s
[INFO] running `Command { std: "docker" "inspect" "3eb7f5b56389747014e61abcc10d6ff42dedd027be9a71e15dbacbcd3561ef17", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3eb7f5b56389747014e61abcc10d6ff42dedd027be9a71e15dbacbcd3561ef17", kill_on_drop: false }`
[INFO] [stdout] 3eb7f5b56389747014e61abcc10d6ff42dedd027be9a71e15dbacbcd3561ef17
